home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / compuserve-file-archive / 04 geoProgramming / CMPRS.BIN < prev    next >
Encoding:
Text File  |  2019-04-13  |  7.0 KB  |  359 lines

  1.  
  2. .if     Pass1
  3. .include     geosSym
  4. .include     geosMac
  5. .endif
  6.  
  7. DOODLEBase     ==$2400
  8. KOALABase          ==DOODLEBase+$0400
  9. ScreenBase          ==KOALABase+8000
  10. ColorBase          ==ScreenBase+1000
  11. ScreenColor          ==ColorBase+1000
  12.  
  13. ;   These are the main DOODLE! and Koala handling routines
  14. ; as well as the GG/JJ decompression code.
  15. ;   Some small support routines are not included and their
  16. ; operation is generally identifiable by their names.
  17.  
  18.  
  19. DOODLEProg:
  20.      LoadW     r0,Working
  21.      jsr     GraphicsString
  22.  
  23.      LoadW     r6,OldName
  24.      jsr     FindFile
  25.      txa
  26.      beq     1$
  27.  
  28.      stx     a0
  29.      LoadW     r0,ClearText
  30.      jsr     GraphicsString
  31.      ldx     a0
  32.      jmp     GeneralError
  33.  
  34. 1$     MoveW     dirEntryBuf+1,r1
  35.      LoadW     r2,9*1024+50
  36.      LoadW     r7,(DOODLEBase-2)
  37.      jsr     ReadFile
  38.      txa
  39.      beq     DisplayDOODLE
  40.  
  41.      stx     a0
  42.      LoadW     r0,ClearText
  43.      jsr     GraphicsString
  44.      ldx     a0
  45.      jmp     GeneralError
  46. DisplayDOODLE:
  47.      LoadW     r0,ClearText
  48.      jsr     GraphicsString
  49.      jsr     i_MoveData
  50. .word     KOALABase
  51. .word     $6000
  52. .word     8000
  53.      jsr     i_MoveData
  54. .word     DOODLEBase
  55. .word     $4000
  56. .word     $0400
  57.      jsr     i_FillRam     ; clear sprite data
  58. .word     $0040
  59. .word     $4400
  60. .byte     $00
  61.  
  62.      jsr     InitForIO
  63.      MoveB     cia2base,Temp1
  64.      MoveB     cia2base+$02,Temp2
  65.      MoveB     vicbase+$15,Temp3     
  66.      MoveB     vicbase+$18,Temp4     
  67.      lda     cia2base+$02
  68.      ora     #$03
  69.      sta     cia2base+$02
  70.      lda     cia2base
  71.      and     #$fc
  72.      ora     #$02
  73.      sta     cia2base     ; vic chip set to bank 1
  74.      lda     #$08
  75.      sta     vicbase+$18     ; video to $6000, color set to $4000
  76.      ClrB     vicbase+$15     
  77.      LoadB     $43f8,$10     ; sprite data at $4400
  78.      jsr     DoneWithIO
  79.  
  80.      lda     DelayFlag
  81.      beq     1$
  82.  
  83.      bra     2$
  84.  
  85. 1$     sei
  86.      jsr     UpdateMouse
  87.      cli
  88.      lda     mouseData
  89.      bmi     1$
  90.  
  91.      bra     4$
  92. 2$     MoveB     TimerTemp,TimerA
  93.      ClrB     TimerB
  94.  
  95. 3$     sei
  96.      jsr     UpdateMouse
  97.      cli
  98.      lda     mouseData
  99.      bpl     4$
  100.  
  101.      dec     TimerB
  102.      bne     3$
  103.  
  104.      dec     TimerA
  105.      bne     3$
  106.  
  107. 4$     jsr     InitForIO
  108.      MoveB     Temp1,cia2base
  109.      MoveB     Temp2,cia2base+$02
  110.      MoveB     Temp3,vicbase+$15     
  111.      MoveB     Temp4,vicbase+$18     
  112.      jsr     DoneWithIO
  113.      jsr     i_ImprintRectangle
  114. .byte     0,199
  115. .word     0,319
  116.      rts
  117. JJProg:
  118.      LoadW     r0,Working
  119.      jsr     GraphicsString
  120.      LoadW     r6,OldName
  121.      jsr     FindFile
  122.      txa
  123.      beq     1$
  124.  
  125.      stx     a0
  126.      LoadW     r0,ClearText
  127.      jsr     GraphicsString
  128.      ldx     a0
  129.      jmp     GeneralError
  130.  
  131. 1$     MoveW     dirEntryBuf+1,r1
  132.      LoadW     r4,diskBlkBuf
  133.      ClrW     r5
  134.      jsr     ReadByte
  135.      jsr     ReadByte
  136.  
  137.      LoadW     r0,DOODLEBase     ;     Destination address in r0
  138.  
  139.      jsr     TADecompress
  140.  
  141.      jmp     DisplayDOODLE
  142. KOALAProg:
  143.      LoadW     r0,Working
  144.      jsr     GraphicsString
  145.      LoadW     r6,OldName
  146.      jsr     FindFile
  147.      txa
  148.      beq     1$
  149.  
  150.      stx     a0
  151.      LoadW     r0,ClearText
  152.      jsr     GraphicsString
  153.      ldx     a0
  154.      jmp     GeneralError
  155.  
  156. 1$     MoveW     dirEntryBuf+1,r1
  157.      LoadW     r2,10100
  158.      LoadW     r7,(KOALABase-2)
  159.      jsr     ReadFile
  160.      txa
  161.      beq     DisplayKOALA
  162.  
  163.      stx     a0
  164.      LoadW     r0,ClearText
  165.      jsr     GraphicsString
  166.      ldx     a0
  167.      jmp     GeneralError
  168. DisplayKOALA:
  169.      LoadW     r0,ClearText
  170.      jsr     GraphicsString
  171.      jsr     i_MoveData
  172. .word     KOALABase
  173. .word     $6000
  174. .word     8000
  175.      jsr     i_MoveData
  176. .word     ScreenBase
  177. .word     $4000
  178. .word     1000
  179.      jsr     i_FillRam     ; clear sprite data
  180. .word     $0040
  181. .word     $4400
  182. .byte     $00
  183.      jsr     InitForIO
  184.  
  185.      jsr     i_MoveData
  186. .word     ColorBase
  187. .word     ctab
  188. .word     1000
  189.      MoveB     ScreenColor,vicbase+$21
  190.      MoveB     cia2base,Temp1
  191.      MoveB     cia2base+$02,Temp2
  192.      MoveB     vicbase+$11,Temp3
  193.      MoveB     vicbase+$15,Temp4
  194.      MoveB     vicbase+$16,Temp5
  195.      MoveB     vicbase+$18,Temp6
  196.      lda     cia2base+$02
  197.      ora     #$03
  198.      sta     cia2base+$02
  199.      lda     cia2base
  200.      and     #$fc
  201.      ora     #$02
  202.      sta     cia2base     ; vic chip set to bank 1
  203.      lda     #$08
  204.      sta     vicbase+$18     ; video to $6000, color set to $4000
  205.      ClrB     vicbase+$15     
  206.      lda     vicbase+$11
  207.      ora     #$20
  208.      sta     vicbase+$11
  209.      lda     vicbase+$16
  210.      ora     #$10
  211.      sta     vicbase+$16
  212.      LoadB     $43f8,$10     ; sprite data at $4400
  213.      jsr     DoneWithIO
  214.      lda     DelayFlag
  215.      beq     1$
  216.  
  217.      bra     2$
  218.  
  219. 1$     sei
  220.      jsr     UpdateMouse
  221.      cli
  222.      lda     mouseData
  223.      bmi     1$
  224.  
  225.      bra     4$
  226.  
  227. 2$     MoveB     TimerTemp,TimerA
  228.      ClrB     TimerB
  229.  
  230. 3$     sei
  231.      jsr     UpdateMouse
  232.      cli
  233.      lda     mouseData
  234.      bpl     4$
  235.  
  236.      dec     TimerB
  237.      bne     3$
  238.  
  239.      dec     TimerA
  240.      bne     3$
  241.  
  242. 4$     jsr     InitForIO
  243.      MoveB     Temp1,cia2base
  244.      MoveB     Temp2,cia2base+$02
  245.      MoveB     Temp3,vicbase+$11
  246.      MoveB     Temp4,vicbase+$15
  247.      MoveB     Temp5,vicbase+$16
  248.      MoveB     Temp6,vicbase+$18
  249.      jsr     DoneWithIO
  250.      jsr     i_ImprintRectangle
  251. .byte     0,199
  252. .word     0,319
  253.      rts
  254. GGProg:
  255.      LoadW     r0,Working
  256.      jsr     GraphicsString
  257.      LoadW     r6,OldName
  258.      jsr     FindFile
  259.      txa
  260.      beq     1$
  261.  
  262.      stx     a0
  263.      LoadW     r0,ClearText
  264.      jsr     GraphicsString
  265.      ldx     a0
  266.      jmp     GeneralError
  267.  
  268. 1$     MoveW     dirEntryBuf+1,r1
  269.      LoadW     r4,diskBlkBuf
  270.      ClrW     r5
  271.      jsr     ReadByte
  272.      jsr     ReadByte
  273.  
  274.      LoadW     r0,KOALABase     ;     Destination address in r0
  275.  
  276.      jsr     TADecompress
  277.  
  278.      jmp     DisplayKOALA
  279. TADecompress:     ;  Destination address in r0
  280.      MoveW     r0,r10
  281.      AddVW     10100,r10
  282. 1$     jsr     GetMemByte
  283.      cmp     #$fe
  284.      beq     3$
  285.  
  286.      jsr     PutMemByte
  287.      bra     1$
  288.  
  289. 3$     jsr     GetMemByte
  290.      pha
  291.      jsr     GetMemByte
  292.      tax
  293.      pla
  294. 4$     jsr     PutMemByte
  295.      dex
  296.      bne     4$
  297.  
  298.      bra     1$
  299.  
  300.  
  301.  
  302. GetMemByte:
  303.      jsr     ReadByte
  304.      cpx     #$00
  305.      beq     1$
  306.  
  307.      pla
  308.      pla
  309.  
  310. 1$     rts
  311. PutMemByte:
  312.      ldy     #$00
  313.      sta     (r0),y
  314.      pha
  315.      IncW     r0
  316.      CmpW     r0,r10
  317.      bcs     1$
  318.  
  319.      pla
  320.      rts
  321.  
  322. 1$     pla
  323.      LoadW     r0,ClearText
  324.      jsr     GraphicsString
  325.  
  326.      pla
  327.      pla
  328.      pla
  329.      pla
  330.      ldx     #$0b
  331.      jmp     GeneralError
  332. Working:
  333. .byte     NEWPATTERN,0,MOVEPENTO
  334. .word     110
  335. .byte     90,RECTANGLETO
  336. .word     210
  337. .byte     110,FRAME_RECTO
  338. .word     110
  339. .byte     90,ESC_PUTSTRING,126,0,102,BOLDON,"- Working -",PLAINTEXT,0
  340.  
  341. ClearText:
  342. .byte     NEWPATTERN,2,MOVEPENTO,0,0,80,RECTANGLETO
  343. .word     319
  344. .byte     120,0
  345.  
  346. .ramsect
  347.  
  348. Temp1:     .block     1
  349. Temp2:     .block     1
  350. Temp3:     .block     1
  351. Temp4:     .block     1
  352. Temp5:     .block     1
  353. Temp6:     .block     1
  354. TimerA:     .block     1
  355. TimerB:     .block     1
  356. LastMemByte:
  357.      .block     1
  358.  
  359. .end